package Util;

import java.util.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.management.timer.Timer;

public class UtilFecha {

    /**
     *
     * @param fechaEntrada será un string
     * @return la fecha introducida en tipo Date en formato dd/MM/yyyy
     */
    public static Date obtenerFecha(String fechaEntrada){
        
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date fecha = new Date();
        
        Date fechaFormateada = null;
        try {
            fecha = df.parse(fechaEntrada);
            long longFecha = fecha.getTime();
            fechaFormateada = new Date(longFecha);
        } catch (Exception e) {
            System.out.println("Error en la entrada de la fecha " + e.getMessage());
        }

        return fechaFormateada;
    }

    /**
     *
     * @param fecha de tipo Date
     * @return devuelva la fecha introducida en String en formato dd/MM/yyyy
     */
    public static String fechaMostrar(Date fecha)
    {
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        long fechaLong = fecha.getTime();
        return df.format(fechaLong);
    }


    /**
     *
     * @param fecha de tipo Date
     * @return devuelve la fecha introducida en tipo String en formato
     *          yyyy/MM/dd para introducirla en la base de datos MySql
     */
    public static String fechaMySQL(Date fecha)
    {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        long fechaLong = fecha.getTime();
        String fechaMysql = df.format(fechaLong);
        return fechaMysql;
    }

    public static Date obtenerFechaBD(String fechaEntrada){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date fecha = new Date();
        Date fechaFormateada = null;
        try {
            fecha = df.parse(fechaEntrada);
            long longFecha = fecha.getTime();
            fechaFormateada = new Date(longFecha);
        } catch (Exception e) {
            System.out.println("Error en la fecha obtenida de la BD " + e.getMessage());
        }

        return fechaFormateada;
    }


    public static int calculaDiferenciaFecha(Date fechaMayor, Date fechaMenor){
        int dif = -1;
        long longMayor = fechaMayor.getTime();
        long longMenor = fechaMenor.getTime();

        dif = (int)(longMayor - longMenor)/(86400000);//Un día tiene 86400000 milisegundos

        return dif;
    }

    public static String sumarDiasFecha(Date fecha, int numDias)
    {
        long longFecha = fecha.getTime();
        longFecha = longFecha + (numDias* 86400000);
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        return df.format(longFecha);
    }
}
